home *** CD-ROM | disk | FTP | other *** search
/ Mac Power 1997 December / MACPOWER-1997-12.ISO.7z / MACPOWER-1997-12.ISO / AMUG / PROGRAMMING / Raven 1.2.sit / Raven 1.2 / Source / Foundation / OS / ZEvent.cpp < prev    next >
Text File  |  1996-11-29  |  4KB  |  156 lines

  1. /*
  2.  *  File:       ZEvent.cpp
  3.  *  Summary:       Classes that encapsulate an EventRecord.
  4.  *  Written by: Jesse Jones
  5.  *
  6.  *  Copyright ゥ 1996 Jesse Jones. 
  7.  *    For conditions of distribution and use, see copyright notice in ZTypes.h  
  8.  *
  9.  *  Change History (most recent first):    
  10.  *
  11.  *         <->     8/01/96    JDJ        Created
  12.  */
  13.  
  14. #include <ZEvent.h>
  15.  
  16. #include <LowMem.h>
  17.  
  18. #include <ZMiscUtils.h>
  19. #include <ZNumbers.h>
  20.  
  21.  
  22. // ===================================================================================
  23. //    class TEvent
  24. // ===================================================================================
  25.  
  26. //---------------------------------------------------------------
  27. //
  28. // TEvent::~TEvent
  29. //
  30. //---------------------------------------------------------------
  31. TEvent::~TEvent()
  32. {
  33. }
  34.  
  35.  
  36. //---------------------------------------------------------------
  37. //
  38. // TEvent::TEvent ()
  39. //
  40. //---------------------------------------------------------------
  41. TEvent::TEvent()
  42. {
  43.     mTimeStamp = ::GetMilliSeconds();
  44. }
  45.  
  46.  
  47. //---------------------------------------------------------------
  48. //
  49. // TEvent::TEvent (EventRecord)
  50. //
  51. //---------------------------------------------------------------
  52. TEvent::TEvent(const EventRecord& event)
  53. {
  54.     mEventRecord = event;
  55.     
  56.     mGlobalPos = event.where;
  57.     
  58.     mTimeStamp = ::GetMilliSeconds();
  59. }
  60.  
  61. #pragma mark -
  62.  
  63. // ========================================================================================
  64. //    class TMouseEvent
  65. // ========================================================================================
  66.  
  67. //---------------------------------------------------------------
  68. //
  69. // TMouseEvent::~TMouseEvent
  70. //
  71. //---------------------------------------------------------------
  72. TMouseEvent::~TMouseEvent()
  73. {
  74. }
  75.  
  76.  
  77. //---------------------------------------------------------------
  78. //
  79. // TMouseEvent::TMouseEvent ()
  80. //
  81. //---------------------------------------------------------------
  82. TMouseEvent::TMouseEvent()
  83. {
  84.     mEventRecord.what = mouseDown;
  85.     
  86.     mClickCount = 1;
  87. }
  88.  
  89.  
  90. //---------------------------------------------------------------
  91. //
  92. // TMouseEvent::TMouseEvent (EventRecord)
  93. //
  94. //---------------------------------------------------------------
  95. TMouseEvent::TMouseEvent(const EventRecord& event, long clickCount) : TEvent(event)
  96. {
  97.     ASSERT(event.what == mouseDown || event.what == mouseUp || event.what == osEvt);
  98.     ASSERT(clickCount >= 0);
  99.     
  100.     mClickCount = clickCount;
  101. }
  102.  
  103. #pragma mark -
  104.  
  105. // ========================================================================================
  106. //    class TKeyEvent
  107. // ========================================================================================
  108.  
  109. //---------------------------------------------------------------
  110. //
  111. // TKeyEvent::~TKeyEvent
  112. //
  113. //---------------------------------------------------------------
  114. TKeyEvent::~TKeyEvent()
  115. {
  116. }
  117.  
  118.  
  119. //---------------------------------------------------------------
  120. //
  121. // TKeyEvent::TKeyEvent ()
  122. //
  123. //---------------------------------------------------------------
  124. TKeyEvent::TKeyEvent()
  125. {
  126.     mEventRecord.what = keyDown;
  127. }
  128.  
  129.  
  130. //---------------------------------------------------------------
  131. //
  132. // TKeyEvent::TKeyEvent (EventRecord)
  133. //
  134. //---------------------------------------------------------------
  135. TKeyEvent::TKeyEvent(const EventRecord& event) : TEvent(event)
  136. {
  137.     ASSERT(event.what == keyDown || event.what == keyUp || event.what == autoKey);
  138. }
  139.  
  140.  
  141. //---------------------------------------------------------------
  142. //
  143. // TKeyEvent::GetRepeatFreq                                [static]
  144. //
  145. //---------------------------------------------------------------
  146. MilliSecond TKeyEvent::GetRepeatFreq()
  147. {
  148.     // A note on LMGetKeyThresh: the key repeat rate typically ranges
  149.     // from 12 ticks (short) to 40 ticks (long).  However, if key repeat
  150.     // is turned off, LMGetKeyThresh returns SHRT_MAX.  To prevent an
  151.     // fTimeOutInterval that high, we bound it at 255 ticks (about 4 
  152.     // seconds).
  153.     long ticks = Min(LMGetKeyThresh(), (short) 255);
  154.     return ticks*1000L/60;
  155. }
  156.